package com.sinotopia.atlantis.core.common.service;

import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;

import com.sinotopia.atlantis.core.common.data.DuplicateValid;
import com.sinotopia.atlantis.core.query.data.Page;
import com.sinotopia.atlantis.core.query.data.Queryable;

public interface ICommonService<T> extends IService<T> {

    /**
     * @param queryable
     * @return
     */
    Page<T> list(Queryable queryable);

    /**
     * @param queryable
     * @param wrapper
     * @return
     */
    Page<T> list(Queryable queryable, Wrapper<T> wrapper);

    /**
     * @param queryable
     * @return
     */
    List<T> listWithNoPage(Queryable queryable);

    /**
     * @param queryable
     * @param wrapper
     * @return
     */
    List<T> listWithNoPage(Queryable queryable, Wrapper<T> wrapper);

    /**
     * @param duplicateValid
     * @param wrapper
     * @return
     */
    Boolean doValid(DuplicateValid duplicateValid, Wrapper<T> wrapper);
}